#ifndef _OD_SIP_EVENT_DISTRIBUTOR_H_
#define _OD_SIP_EVENT_DISTRIBUTOR_H_

#include "pipeline.h"
#include "od_sip_comn.h"

#ifdef __cplusplus
    extern "C" {
#endif


typedef enum
{
    OD_SIP_EVT_QUEUE_TYPE_REGISTER_CLIENT,
    OD_SIP_EVT_QUEUE_TYPE_REGISTER_SERVER,
    OD_SIP_EVT_QUEUE_TYPE_INVITE,
    OD_SIP_EVT_QUEUE_TYPE_HANDLE_EVENT,
    OD_SIP_EVT_QUEUE_TYPE_OTHER,
    OD_SIP_EVT_QUEUE_NUM
}od_sip_event_queue_type;

typedef struct
{  
    int tsk_id;   /**< used to distinguish tasks of the same type*/
    int *obj_id;   /**< cid, rid, or other object-id*/
    const char *tsk_name;
    od_sip_event_queue_type queue_type;
    pipeline_handle g_event_pipe;
}od_sip_event_queue;


typedef struct
{
    const char *task_name;
}od_sip_event_distributor_static_params;


typedef struct
{
    /*TODO*/
}od_sip_event_distributor_dynamic_params;


typedef void* od_sip_event_distributor_handle;

int od_sip_evt_distrb_add(od_sip_event_queue *evt_que);
void od_sip_evt_distrb_remove(od_sip_event_queue *evt_que);

od_sip_event_distributor_handle od_sip_event_distributor_create(od_sip_event_distributor_static_params *static_params, 
                                                                od_sip_event_distributor_dynamic_params *dynamic_params);


#ifdef __cplusplus
    }
#endif

#endif

/*_*/

